package com.chinaedu.oc.serv.commondity;

import java.util.List;

import com.chinaedu.oc.po.commodity.Commodity;
import com.chinaedu.oc.po.commodity.CommodityProduct;
import com.chinaedu.oc.po.commodity.dto.QueryCondition;
import com.chinaedu.oc.util.annotation.Master;
import com.chinaedu.oc.util.annotation.Slaver;

public interface ICommodityServ {

	/**
	 * 分页查询
	 * 
	 * @param param
	 * @return 返回页码内所有列表
	 */
	@Slaver
	List<Commodity> queryAll(QueryCondition queryCondition);

	/**
	 * 
	 * @param commodity
	 * @return 通过条件查询
	 */
	@Slaver
	List<Commodity> queryByCase(Commodity commodity);

	/**
	 * 多ID查询 (选中查询)
	 * 
	 * @param ids
	 * @return
	 */
	@Slaver
	List<Commodity> queryByIds(List<String> ids);

	/**
	 * 
	 * @param ids:商品ID
	 *            选中删除 有可能删除多个商品(批量删除)
	 */
	@Master
	void delete(List<String> ids);
	
	/**
	 * 
	 * @param ids:商品ID
	 *            选中删除 有可能删除多个商品(批量删除)
	 */
	@Master
	void deleteById(String id);

	/**
	 * 根据商品ID修改商品
	 * 
	 * @param commodity
	 */
	@Master
	void updateById(Commodity commodity);

	/**
	 * 新增增加商品
	 * 
	 * @param commodity
	 */
	@Master
	void insertOrUpdate(Commodity commodity);
	
	/**
	 * copy   复制数据
	 * @param ids
	 */
	@Master
	void copy(List<String> ids);

	/**
	 * 产品同步成商品时调用此方法
	 * 
	 * @param commodity
	 */
	@Master
	void synchronizeCommodityOrUpdate(Commodity commodity);

	/**
	 * 提交审核  返回不能通过审核的商品名字
	 */
	@Master
	List<String> commitAudit(List<String> ids,String sponsor);

	/**
	 * 上架商品
	 * 
	 * @param commodity
	 */
	@Master
	void group(Commodity commodity);

	/**
	 * 定价时查询的商品信息
	 * 
	 * @param id
	 * @return
	 */
	@Slaver
	Commodity findById(String id);

	/**
	 * 分页时查询记录数
	 * 
	 * @param queryCondition
	 * @return
	 */
//	@Slaver
//	int queryCountByQueryCondition(QueryCondition queryCondition);
	
	/**
	 * 查询商品的详细信息  比如  审核  销售日期  等
	 * @param id
	 * @return
	 */
	@Slaver
	Commodity findCommodityDetail(String id);
	
	/**
	 * 要打包的单品信息
	 * @param ids
	 * @return
	 */
	@Slaver
	List<CommodityProduct> commitSingleCommodity(List<String> commodityIds);
	
}
